package com.xiaoge.demo.configs.annotation.token;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.xiaoge.demo.pojo.User;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * 作者：guoyzh
 * 时间：2018/9/10
 * 功能：
 */
@Service
public class TokenService {

    @Value("${customer_settings.token.expiration}")
    private long expiration; // token有效期

    /**
     * 通过用户信息获取token
     *
     * @param user
     * @return
     */
    public String getToken(User user) {
        String token = "";
        token = JWT.create()
                .withAudience(String.valueOf(user.getId())) // token中保存字段
                .withExpiresAt(new Date(System.currentTimeMillis() + (expiration * 1000))) // token中的有效期
                .sign(Algorithm.HMAC256(String.valueOf(user.getId()))); // token的salt 加密使用的签名 推荐使用uuid
        return token;
    }
}
